As a method for keeping cache coherency in a multi processor system or a shared memory system, there are a SMP (Symmetric Multi Processing) system and a ccNUMA (cache coherent Non-Uniform Memory Access) system.
In the ccNUMA system, a full directory system in which a main storage memory is divided for every block having a size and information for keeping cache coherency called as a directory is stored in the main storage memory with respect to each block is generally employed. In many case, the block size is equal to a cache line size of a cache memory.
There is a method for assuring an area for storing a directory s different from the area of the main storage memory. However, when a memory different from the main storage memory is provided in order to storage the directory, although the area that is used as the main storage memory may be ensured, the cost of the system is increased.
On the other hand, it is general that a main storage memory of a system specifically used as a server is a DIMM (Dual Inline Memory Module) that store parity information or a check bit of an error correction code at the portion of, for example, 1 of ratio of 8:1. There is also a method in which the portion of 1 of the ratio of 8:1 is used as the area for storing a directory in stead of parity information. However, it is important for the main storage memory of a system used as a server, that is, the DIMM to assure reliability of stored data (that is, that there is no error in data).
In the system other than the ccNUMA system, that is, in the SMP system or the like in which it is not important to store in the main storage memory other than data, S8EC-D8ED ECC (Single-8-bit-group Error Correct, Double-8-bit-group Error Detect, Error Checking and Correcting) system is employed by storing SEC-DED ECC (Single Error Correct, Double Error Detect, Error Checking and Correcting) in the portion of one byte, or by checking data by a unit of every plurality times of reading. Particularly, in the later case, even one chip is broken down in a commercially available DIMM constituted by, for example, 18 chips, it is possible to deploy the DIMM by data correction.
Accordingly, when employing the ccNUMA system in which a system used as a serer is a full directory system, it is desirable to ensure the area for the directory while providing data integrity or data assurance by which one chip failure of the DIMM is endured like the SMP system.
On the other hand, an architecture such as a main frame has been proposed in which the main storage memory is partitioned into units each called as a page, and information called as a storage key is stored for each of the pages. By storing the key information of, for example, 4 bits in the area of the main storage memory, a memory protect function that allows access only when the same key information is included may be provided. However, in a recent multi processor system, the capacity of the main storage memory has been increased. Accordingly, the page number has been increased in proportion to the increase of the capacity of the main storage memory, and the total mount of key information has been also increased. It is general to use the DIMM that is cheap and standardized for the main storage memory. Accordingly, it is difficult to separately establish the area for storing the key information at a moderate price.
Consequently, a part of the area of the main storage memory established by the DIMM is diverted as a storage area of the key information. Consequently, the area which is normally used as the area of the main storage memory is used for storing key information, so that it is difficult to improve the utilization efficiency of the main storage memory.                [Patent Document 1] Japanese Laid-open Patent Publication No. 11-232129        [Patent Document 2] Japanese Laid-open Patent Publication No. 9-120671        [Patent Document 3] Japanese Laid-open Patent Publication No. 2006-252545        [Patent Document 4] Japanese Laid-open Patent Publication No. 54-57848        
In a conventional multi processor system or a shared memory system, a part of the area of the main storage memory is used for storing information for keeping cache coherency, information for data assurance, information for protecting the memory, or the like, so that there is a problem in that it is difficult to execute data assurance while improving utilization efficiency of the area of the main storage memory without increasing the cost of the system.